# DATA CLEANING

# 0. CONFIG ----
library(tidyverse)

# 1. IMPORT DATA ----
# We import the survey raw data as .sav file. 
# Directory must be the same where data file is. If not, change it with "setwd()".
df <- haven::read_sav("raw_survey_data.sav")

# 2. CLEAN DATA ----

## 2.1. Create variables for open-ended question (multiresponse) ----
# Topic 1, 2 and 3 --> to binary variables for each topic
df$INT_POL_CODI_HABITATGE_1 <- ifelse((df$INTERES_POL_TEMES_COD_1 == 1 |
                                         df$INTERES_POL_TEMES_COD_2 == 1 |
                                         df$INTERES_POL_TEMES_COD_3 == 1), 1, 0)
df$INT_POL_CODI_HABITATGE_1[is.na(df$INT_POL_CODI_HABITATGE_1)] <- 0

df$INT_POL_CODI_PRECARIETAT_2 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 2 |
                                          df$INTERES_POL_TEMES_COD_2 == 2 |
                                          df$INTERES_POL_TEMES_COD_3 == 2, 1, 0)
df$INT_POL_CODI_PRECARIETAT_2[is.na(df$INT_POL_CODI_PRECARIETAT_2)] <- 0

df$INT_POL_CODI_ELECCIONS_3 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 3 |
                                        df$INTERES_POL_TEMES_COD_2 == 3 |
                                        df$INTERES_POL_TEMES_COD_3 == 3, 1, 0)
df$INT_POL_CODI_ELECCIONS_3[is.na(df$INT_POL_CODI_ELECCIONS_3)] <- 0

df$INT_POL_CODI_PARTITS_4 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 4 |
                                      df$INTERES_POL_TEMES_COD_2 == 4 |
                                      df$INTERES_POL_TEMES_COD_3 == 4, 1, 0)
df$INT_POL_CODI_PARTITS_4[is.na(df$INT_POL_CODI_PARTITS_4)] <- 0

df$INT_POL_CODI_CANVI_CLIMATIC_5 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 5 |
                                             df$INTERES_POL_TEMES_COD_2 == 5 |
                                             df$INTERES_POL_TEMES_COD_3 == 5, 1, 0)
df$INT_POL_CODI_CANVI_CLIMATIC_5[is.na(df$INT_POL_CODI_CANVI_CLIMATIC_5)] <- 0

df$INT_POL_CODI_FEMINISME_6 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 6 |
                                        df$INTERES_POL_TEMES_COD_2 == 6 |
                                        df$INTERES_POL_TEMES_COD_3 == 6, 1, 0)
df$INT_POL_CODI_FEMINISME_6[is.na(df$INT_POL_CODI_FEMINISME_6)] <- 0

df$INT_POL_CODI_LLENGUA_7 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 7 |
                                      df$INTERES_POL_TEMES_COD_2 == 7 |
                                      df$INTERES_POL_TEMES_COD_3 == 7, 1, 0)
df$INT_POL_CODI_LLENGUA_7[is.na(df$INT_POL_CODI_LLENGUA_7)] <- 0

df$INT_POL_CODI_INDEPENDENCIA_8 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 8 |
                                            df$INTERES_POL_TEMES_COD_2 == 8 |
                                            df$INTERES_POL_TEMES_COD_3 == 8, 1, 0)
df$INT_POL_CODI_INDEPENDENCIA_8[is.na(df$INT_POL_CODI_INDEPENDENCIA_8)] <- 0

df$INT_POL_CODI_ECONOMIA_9 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 9 |
                                       df$INTERES_POL_TEMES_COD_2 == 9 |
                                       df$INTERES_POL_TEMES_COD_3 == 9, 1, 0)
df$INT_POL_CODI_ECONOMIA_9[is.na(df$INT_POL_CODI_ECONOMIA_9)] <- 0

df$INT_POL_CODI_SEGURETAT_10 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 10 |
                                         df$INTERES_POL_TEMES_COD_2 == 10 |
                                         df$INTERES_POL_TEMES_COD_3 == 10, 1, 0)
df$INT_POL_CODI_SEGURETAT_10[is.na(df$INT_POL_CODI_SEGURETAT_10)] <- 0

df$INT_POL_CODI_CORRUPCIO_11 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 11 |
                                         df$INTERES_POL_TEMES_COD_2 == 11 |
                                         df$INTERES_POL_TEMES_COD_3 == 11, 1, 0)
df$INT_POL_CODI_CORRUPCIO_11[is.na(df$INT_POL_CODI_CORRUPCIO_11)] <- 0

df$INT_POL_CODI_IMMIGRACIO_12 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 12 |
                                          df$INTERES_POL_TEMES_COD_2 == 12 |
                                          df$INTERES_POL_TEMES_COD_3 == 12, 1, 0)
df$INT_POL_CODI_IMMIGRACIO_12[is.na(df$INT_POL_CODI_IMMIGRACIO_12)] <- 0

df$INT_POL_CODI_IDEOLOGIA_13 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 13 |
                                         df$INTERES_POL_TEMES_COD_2 == 13 |
                                         df$INTERES_POL_TEMES_COD_3 == 13, 1, 0)
df$INT_POL_CODI_IDEOLOGIA_13[is.na(df$INT_POL_CODI_IDEOLOGIA_13)] <- 0

df$INT_POL_CODI_EDUCACIO_14 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 14 |
                                        df$INTERES_POL_TEMES_COD_2 == 14 |
                                        df$INTERES_POL_TEMES_COD_3 == 14, 1, 0)
df$INT_POL_CODI_EDUCACIO_14[is.na(df$INT_POL_CODI_EDUCACIO_14)] <- 0

df$INT_POL_CODI_SANITAT_15 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 15 |
                                       df$INTERES_POL_TEMES_COD_2 == 15 |
                                       df$INTERES_POL_TEMES_COD_3 == 15, 1, 0)
df$INT_POL_CODI_SANITAT_15[is.na(df$INT_POL_CODI_SANITAT_15)] <- 0

df$INT_POL_CODI_INTERNACIONAL_16 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 16 |
                                             df$INTERES_POL_TEMES_COD_2 == 16 |
                                             df$INTERES_POL_TEMES_COD_3 == 16, 1, 0)
df$INT_POL_CODI_INTERNACIONAL_16[is.na(df$INT_POL_CODI_INTERNACIONAL_16)] <- 0

df$INT_POL_CODI_DESCONFIATS_17 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 17 |
                                           df$INTERES_POL_TEMES_COD_2 == 17 |
                                           df$INTERES_POL_TEMES_COD_3 == 17, 1, 0)
df$INT_POL_CODI_DESCONFIATS_17[is.na(df$INT_POL_CODI_DESCONFIATS_17)] <- 0

df$INT_POL_CODI_POL_SOCIALS_18 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 18 |
                                           df$INTERES_POL_TEMES_COD_2 == 18 |
                                           df$INTERES_POL_TEMES_COD_3 == 18, 1, 0)
df$INT_POL_CODI_POL_SOCIALS_18[is.na(df$INT_POL_CODI_POL_SOCIALS_18)] <- 0

df$INT_POL_CODI_IMPOSTOS_19 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 19 |
                                        df$INTERES_POL_TEMES_COD_2 == 19 |
                                        df$INTERES_POL_TEMES_COD_3 == 19, 1, 0)
df$INT_POL_CODI_IMPOSTOS_19[is.na(df$INT_POL_CODI_IMPOSTOS_19)] <- 0

df$INT_POL_CODI_BE_COMU_20 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 20 |
                                       df$INTERES_POL_TEMES_COD_2 == 20 |
                                       df$INTERES_POL_TEMES_COD_3 == 20, 1, 0)
df$INT_POL_CODI_BE_COMU_20[is.na(df$INT_POL_CODI_BE_COMU_20)] <- 0

df$INT_POL_CODI_DRETS_21 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 21 |
                                     df$INTERES_POL_TEMES_COD_2 == 21 |
                                     df$INTERES_POL_TEMES_COD_3 == 21, 1, 0)
df$INT_POL_CODI_DRETS_21[is.na(df$INT_POL_CODI_DRETS_21)] <- 0

df$INT_POL_CODI_INSTITUCIONS_22 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 22 |
                                            df$INTERES_POL_TEMES_COD_2 == 22 |
                                            df$INTERES_POL_TEMES_COD_3 == 22, 1, 0)
df$INT_POL_CODI_INSTITUCIONS_22[is.na(df$INT_POL_CODI_INSTITUCIONS_22)] <- 0

df$INT_POL_CODI_MUNICIPAL_23 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 23 |
                                         df$INTERES_POL_TEMES_COD_2 == 23 |
                                         df$INTERES_POL_TEMES_COD_3 == 23, 1, 0)
df$INT_POL_CODI_MUNICIPAL_23[is.na(df$INT_POL_CODI_MUNICIPAL_23)] <- 0

df$INT_POL_CODI_INFORMAT_24 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 24 |
                                        df$INTERES_POL_TEMES_COD_2 == 24 |
                                        df$INTERES_POL_TEMES_COD_3 == 24, 1, 0)
df$INT_POL_CODI_INFORMAT_24[is.na(df$INT_POL_CODI_INFORMAT_24)] <- 0

df$INT_POL_CODI_REPRESENTANTS_25 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 25 |
                                             df$INTERES_POL_TEMES_COD_2 == 25 |
                                             df$INTERES_POL_TEMES_COD_3 == 25, 1, 0)
df$INT_POL_CODI_REPRESENTANTS_25[is.na(df$INT_POL_CODI_REPRESENTANTS_25)] <- 0

df$INT_POL_CODI_IMPORTANT_26 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 26 |
                                         df$INTERES_POL_TEMES_COD_2 == 26 |
                                         df$INTERES_POL_TEMES_COD_3 == 26, 1, 0)
df$INT_POL_CODI_IMPORTANT_26[is.na(df$INT_POL_CODI_IMPORTANT_26)] <- 0

df$INT_POL_CODI_PENSIONS_27 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 27 |
                                        df$INTERES_POL_TEMES_COD_2 == 27 |
                                        df$INTERES_POL_TEMES_COD_3 == 27, 1, 0)
df$INT_POL_CODI_PENSIONS_27[is.na(df$INT_POL_CODI_PENSIONS_27)] <- 0

df$INT_POL_CODI_ALTRES_80 <- ifelse(df$INTERES_POL_TEMES_COD_1 == 80 |
                                      df$INTERES_POL_TEMES_COD_2 == 80 |
                                      df$INTERES_POL_TEMES_COD_3 == 80, 1, 0)
df$INT_POL_CODI_ALTRES_80[is.na(df$INT_POL_CODI_ALTRES_80)] <- 0

## 2.2. Create variable for treatment group ----
# If it did not have NA, it means it was in that treatment group.
df <- df %>% 
  mutate(GRUP_EXPERIMENT = case_when(
    (!INTERES_ACCES_HAB_0_10 %in% c(4444, 6666, 7777) | 
       !INTERES_PREC_LAB_0_10 %in% c(4444, 6666, 7777)) ~ "Youth issues",
    (!INTERES_ELECCIONS_0_10 %in% c(-44, 4444, 6666, 7777) | 
       !INTERES_PARTITS_0_10 %in% c(-44, 4444, 6666, 7777)) ~ "Traditional politics",
    (!INTERES_CANVI_CLI_0_10 %in% c(4444, 6666, 7777) | 
       !INTERES_FEMINISME_0_10 %in% c(4444, 6666, 7777)) ~ "Current issues",
    (!INTERES_LLENGUA_CAT_0_10 %in% c(4444, 6666, 7777) | 
       !INTERES_REL_CAT_ESP_0_10 %in% c(4444, 6666, 7777)) ~ "National identity",
    (!INTERES_FUNC_ECO_0_10 %in% c(4444, 6666, 7777) | 
       !INTERES_SEG_CIUTADANA_0_10 %in% c(4444, 6666, 7777)) ~ "Senior issues",
    TRUE ~ "Control"
  )) %>% 
  # Put as factor with proper order
  mutate(GRUP_EXPERIMENT = factor(GRUP_EXPERIMENT,
                                   levels = c("Control",
                                              "Youth issues",
                                              "Traditional politics",
                                              "Current issues",
                                              "National identity",
                                              "Senior issues")))

## 2.3. Clean interest variables ----
df <- df %>% 
  # If there is NA, as NA instead of their numeric equivalent
  mutate(across(starts_with("INTERES_") & ends_with("_0_10"),
                ~ if_else(. %in% c(4444, 6666, 7777), NA, .))) %>% 
  # Create variables for specific interests
  mutate(INTERES_ESPECIFIC_MITJA_1 = (INTERES_ACCES_HAB_0_10 + INTERES_PREC_LAB_0_10) / 2,
         INTERES_ESPECIFIC_MITJA_2 = (INTERES_ELECCIONS_0_10 + INTERES_PARTITS_0_10) / 2,
         INTERES_ESPECIFIC_MITJA_3 = (INTERES_CANVI_CLI_0_10 + INTERES_FEMINISME_0_10) / 2,
         INTERES_ESPECIFIC_MITJA_4 = (INTERES_LLENGUA_CAT_0_10 + INTERES_REL_CAT_ESP_0_10) / 2,
         INTERES_ESPECIFIC_MITJA_5 = (INTERES_FUNC_ECO_0_10 + INTERES_SEG_CIUTADANA_0_10) / 2) %>% 
  mutate(INTERES_ESPECIFIC_MITJA = case_when(
    GRUP_EXPERIMENT == "Control" ~ NA,
    GRUP_EXPERIMENT == "Youth issues" ~ INTERES_ESPECIFIC_MITJA_1,
    GRUP_EXPERIMENT == "Traditional politics" ~ INTERES_ESPECIFIC_MITJA_2,
    GRUP_EXPERIMENT == "Current issues" ~ INTERES_ESPECIFIC_MITJA_3,
    GRUP_EXPERIMENT == "National identity" ~ INTERES_ESPECIFIC_MITJA_4,
    GRUP_EXPERIMENT == "Senior issues" ~ INTERES_ESPECIFIC_MITJA_5
  )) %>% 
  select(-matches("^INTERES_ESPECIFIC_MITJA_.*[1-5]$"))

## 2.4. Clean sociodemographic vars of interest ----
df <- df %>% 
  mutate(EDAT = if_else(EDAT == 7777, NA, EDAT)) %>% 
  mutate(EDAT_BIN_35 = factor(if_else(EDAT < 35, "Younger than 35", "35 and older"),
                              levels = c("Younger than 35", "35 and older"))) %>%
  mutate(EDAT_BIN_30 = factor(if_else(EDAT < 30, "Younger than 30", "30 and older"),
                              levels = c("Younger than 30", "30 and older"))) %>%
  mutate(EDAT_5A = factor(case_when(
    EDAT_CEO == 4 ~ "16-19",
    EDAT_CEO == 5 ~ "20-24",
    EDAT_CEO == 6 ~ "25-29",
    EDAT_CEO == 7 ~ "30-34",
    EDAT_CEO == 8 ~ "35-39",
    EDAT_CEO == 9 ~ "40-44",
    EDAT_CEO == 10 ~ "45-49",
    EDAT_CEO == 11 ~ "50-54",
    EDAT_CEO == 12 ~ "55-59",
    EDAT_CEO == 13 ~ "60-64",
    EDAT_CEO == 14 ~ "65-69",
    EDAT_CEO == 15 ~ "70-74",
    EDAT_CEO %in% c(16, 17) ~ "75 or more",
    TRUE ~ NA_character_
  ), levels = c("16-19", "20-24", "25-29", "30-34", "35-39", "40-44", "45-49", 
                "50-54", "55-59", "60-64", "65-69", "70-74", "75 or more"))) %>% 
  mutate(EDAT_10A = factor(case_when(
    EDAT >= 16 & EDAT <= 25 ~ "16-25",
    EDAT >= 26 & EDAT <= 35 ~ "26-35",
    EDAT >= 36 & EDAT <= 45 ~ "36-45",
    EDAT >= 46 & EDAT <= 55 ~ "46-55",
    EDAT >= 56 & EDAT <= 65 ~ "56-65",
    EDAT >= 66 & EDAT <= 110 ~ "66 or more",
    TRUE ~ NA_character_
  ), levels = c("16-25", "26-35", "36-45", "46-55", "56-65", "66 or more")
  )) %>% 
  mutate(EDAT_3G_25 = factor(case_when(
    EDAT >= 16 & EDAT <= 25 ~ "16-25",
    EDAT >= 26 & EDAT <= 64 ~ "26-64",
    EDAT >= 65 & EDAT <= 110 ~ "65 or more",
    TRUE ~ NA_character_
  ), levels = c("16-25", "26-64", "65 or more")
  )) %>% 
  mutate(EDAT_3G_30 = factor(case_when(
    EDAT >= 16 & EDAT <= 29 ~ "16-29",
    EDAT >= 30 & EDAT <= 64 ~ "30-64",
    EDAT >= 65 & EDAT <= 110 ~ "65 or more",
    TRUE ~ NA_character_
  ), levels = c("16-29", "30-64", "65 or more")
  )) %>%
  mutate(EDAT_3G_35 = factor(case_when(
    EDAT >= 16 & EDAT <= 34 ~ "16-34",
    EDAT >= 35 & EDAT <= 64 ~ "35-64",
    EDAT >= 65 & EDAT <= 110 ~ "65 or more",
    TRUE ~ NA_character_
  ), levels = c("16-34", "35-64", "65 or more")
  )) %>%
  mutate(EDAT_3G_40 = factor(case_when(
    EDAT >= 16 & EDAT <= 39 ~ "16-39",
    EDAT >= 40 & EDAT <= 64 ~ "40-64",
    EDAT >= 65 & EDAT <= 110 ~ "65 or more",
    TRUE ~ NA_character_
  ), levels = c("16-39", "40-64", "65 or more")
  )) %>%
  mutate(SEXE = case_when(
    SEXE == 1 ~ "Men",
    SEXE == 2 ~ "Women",
    TRUE ~ NA
  )) %>% 
  mutate(SEXE = factor(SEXE, levels = c("Men", "Women")))

## 2.5. Create variable of political participation ----
# If has participated in anything, 1, otherwise 0
df <- df %>% 
  mutate(
    PARTI_POL = case_when(
      PARTI_SIGNAR == 1 ~ 1,
      PARTI_ACTE_REIVINDICATIU == 1 ~ 1,
      PARTI_MANIFESTACIO == 1 ~ 1,
      PARTI_CONTACTE == 1 ~ 1,
      PARTI_ACTIVITATS_ILEGALS == 1 ~ 1,  
      PARTI_ENGANXINES == 1 ~ 1,
      TRUE ~ 0
    )
  )

## 2.6. Reorder variables ----
df <- df %>% 
  select(PONDERA, PONDERA_ENLINIA, MODE_ADMIN, SEXE,
         EDAT, EDAT_BIN_35, EDAT_BIN_30, EDAT_5A, EDAT_10A, PARTI_POL,
         INTERES_POL_0_10, matches("^INTERES_.*_0_10$"), GRUP_EXPERIMENT,
         starts_with("INT_POL_CODI_"), INTERES_POL_TEMES,
         everything())

# 3. EXPORT DATA ----
write_rds(df, "clean_data.rds")



